;function getE(sele) {////获得元素对象
	var b = sele.substr(0, 1);
	if(b == '#') {
		return document.getElementById(sele.substring(1))
	} else if(b == '.') {
		return document.getElementsByClassName(sele.substring(1))
	} else {
		if(document.getElementsByTagName(sele)) {
			return document.getElementsByTagName(sele)
		} else {
			throw new Error('The selector does not exit')
		}
	}
}  
		function ranBgcolor(){
	return '#'+parseInt(Math.random()*0xffffff).toString(16);
	}
		function getstyle(obj, arr) {////获得css属性
			if(obj.currentStyle) {
			return obj.currentStyle[arr];
			} else {
		return getComputedStyle(obj)[arr]
	}
}
		function getStyle(obj,attr){
	if(obj.currentStyle){
		return obj.currentStyle[attr];
	}else{
		return getComputedStyle(obj)[attr];
	}
}
function add0(a,n){//////////////加0秘术。
				var b=(Array(n).join('0')+a).slice(-n);
				return b;
			}
function yan(n) {//生成数字字母验证码
	var a = [0,1,2,3,4,5,6,7,8,9];
	var b = '';
	for(var i = 0; i <= n-1; i++) {
		var j = Math.floor(Math.random() * a.length);
		b+=a[j];
	}
	return b;
}

function norepeat(a) {//去重法
	var k = a.length;
	for(var i = 0; i < a.length; i++) {
		for(var j = a.length - 1; j >= i + 1; j--) {
			if(a[j] == a[i]) {
				a.splice(j, 1);
			}
		}
	}
	return a;
}

function norepeat1(a) {
	var k = a.length;
	for(var i = 0; i < a.length; i++) {
		for(var j = i + 1; j < a.length; j++) {
			if(a[j] == a[i]) {
				a.splice(j, 1);
				j--;
			}
		}
	}
	return a;
}

function norepeat2(a) {
	var b = [];
	b.push(a[0]);
	for(i = 1; i < a.length; i++) {
		var r = 1;
		for(j = 0; j < b.length; j++) {
			if(a[i] == b[j]) {
				r = 0;
				break;
			}
		}
		if(r) {
			b.push(a[i]);
		}
	}
	return b;
}

function norepeat3(a) {
	var b = [];
	for(var i = 0; i < a.length; i++) {
		if(b.indexOf(a[i]) == -1) {
			b.push(a[i])
		}
	}
	return b;
}

function norepeat4(arr) {
	var b = [];
	arr.every((v, i, a) => {
		if(b.indexOf(v) == -1) {
			b.push(v);
		}
		return true;
	})
	return b;
}

function norepeat5(arr) {
	var b = [];
	arr.some((v, i, a) => {
		if(b.indexOf(v) == -1) {
			b.push(v);
		}
		return false;
	})
	return b;
}

function norepeat6(arr) {
	arr.map((v, i, ar) => {
		var p = k.indexOf(v, i + 1);
		while(p != -1) {
			arr.splice(p, 1);
			p = arr.indexOf(v, i + 1);
		}
	})
	return arr;
}

function norepeat7(arr) {
	return(arr.filter((v, i, ar) => {
		var p = arr.indexOf(v, i + 1);
		if(p == -1) {
			return true;
		} else return false;
	}))
}

function norepeat8(arr) {
	arr.forEach((v, i, a) => {
		for(var j = i + 1; j < a.length; j++) {
			if(arr[j] == v) {
				arr.splice(j, 1);
				j--;
			}
		}
	})
	return arr;
}
function norepeat9(arr){               //filter去重  数组项的值、该项在数组中的位置 indexOf() 找到了返回在数组中的位置。
		var newarr=arr.filter(function(value,index,array){
			return arr.indexOf(value)==index;//返回true的值组成的数组
		});
		return newarr;
}
function bgcl(){
	return '#'+parseInt(Math.random()*0xffffff).toString(16);
}
function yzm(n){
   var arr=[];
   for(var i=48;i<=57;i++){
      arr.push(String.fromCharCode(i));
   }
   for(var i=97;i<=122;i++){
      arr.push(String.fromCharCode(i));
   }
   var html='';
   for(var j=0;j<n;j++){
      var ramIndex=parseInt(Math.random()*arr.length);
      if(ramIndex>9){
         var bool=Math.random()>0.5 ? true:false;
         if(bool){
            html+=arr[ramIndex].toUpperCase();
         }else{
            html+=arr[ramIndex];
         }
      }else{
         html+=arr[ramIndex];
      }
   }
   return html;
}



var mmk = [];//正常的密码库。
for(i = 33; i <= 126; i++) {
    mmk.push(String.fromCharCode(i));
}
		function abs(obj){/////////////获取元素的绝对位置
				var l=obj.offsetLeft;
				var t=obj.offsetTop;
				while(obj.parentNode){
				obj=obj.parentNode;
				if(getComputedStyle(obj)['position']!='static')
				{l+=obj.offsetLeft;t+=obj.offsetTop;}
			 }
			}
		function getbyclass(cn,parent){
		   	var arr=[];
		   	var parent=parent||document; 
		   	var a=document.getElementsByTagName('*');
		   	//document.body.innerHTML+=1;
		   	for(var i=0;i<a.length;i++){
		   	    	var b=a[i].className.split('');
		   	    	for(var j=0;j<b.length;j++){
		   	    		if(cn==b[j]){
		   	    		 arr.push(a[i]);	
		   	    		}
		   	    	}
		   	   }
		   	 return arr;
		   }
/* 			function move(oD,ev){
	            oD.style.zIndex=5;
				var ev=ev||window.event;
				var p=null;
				sx=ev.offsetX;
				sy=ev.offsetY;
				oD.style.left=ev.clientX-sx+'px';
			    oD.style.top=ev.clientY-sy+'px';
				document.onmousemove=function(eve){	
					var eve=eve||window.event;
					oD.style.left=eve.clientX-sx+'px';
					oD.style.top=eve.clientY-sy+'px';
					for(var j=0;j<oB.length;j++){		   				
		   				a.push(gougu(this,oB[j]));	   
		   			}
		   			p=idx(op,zd(a));
		   			alert(p.index);
		   			p.style.left=p.offsetLeft-10+'px';
		   			p.style.top=p.offsetTop-10+'px';
					if(oD.offsetLeft<=0){
						oD.style.left=0;
					}
					if(oD.offsetTop<=0){
						oD.style.top=0;
					}
					if(oD.offsetLeft>=document.documentElement.clientWidth-oD.offsetWidth){
						oD.style.left=(document.documentElement.clientWidth-oD.offsetWidth)+'px';
					}
					if(oD.offsetTop>=document.documentElement.clientHeight-oD.offsetHeight){
						oD.style.top=(document.documentElement.clientHeight-oD.offsetHeight)+'px';
					}
						return false;
				}
				//document.onmouseup=function(){
				//oD.style.zIndex=1;
				//document.onmouseup=null;
				//document.onmousemove=null;
			    // }
			}*/
			function move(oD,ev,op,oB){
	            oD.style.zIndex=5;
				var ev=ev||window.event;
				var p=null;
				var a=[];
				sx=ev.offsetX;
				sy=ev.offsetY;
				oD.style.left=ev.clientX-sx+'px';
			    oD.style.top=ev.clientY-sy+'px';
				document.onmousemove=function(eve){	
					a=[];
					var eve=eve||window.event;
					oD.style.left=eve.clientX-sx+'px';
					oD.style.top=eve.clientY-sy+'px';
					for(var j=0;j<oB.length;j++){		   				
		   				a.push(gougu(oD,oB[j]));	   
		   			}
					//console.log(a)
		   			p=idx(op,zd(a));
		   			if(p!=oD){
		   			p.style.left=oB[zd(a)].offsetLeft-10+'px';
		   			p.style.top=oB[zd(a)].offsetTop-10+'px';}
		   			for(var j=0;j<oB.length;j++){		   				
		   				if(j!=zd(a)&&j!=oD.index){
		   					idx(op,j).style.top=oB[j].offsetTop+'px';
		   					
		   					idx(op,j).style.left=oB[j].offsetLeft+'px';
		   				}
		   			}
/*					if(oD.offsetLeft<=0){
						oD.style.left=0;
					}
					if(oD.offsetTop<=0){
						oD.style.top=0;
					}
					if(oD.offsetLeft>=document.documentElement.clientWidth-oD.offsetWidth){
						oD.style.left=(document.documentElement.clientWidth-oD.offsetWidth)+'px';
					}
					if(oD.offsetTop>=document.documentElement.clientHeight-oD.offsetHeight){
						oD.style.top=(document.documentElement.clientHeight-oD.offsetHeight)+'px';
					}*/
						return false;
				}
			}
function gougu(d1,d2){
	var x=Math.pow(d1.offsetLeft-d2.offsetLeft,2);
	var y=Math.pow(d1.offsetTop-d2.offsetTop,2);
	return x+y;
}
function zd(a){
	var minindex=0;
	var min=a[minindex];
	for(var i=0;i<a.length;i++){
		if(a[i]<min){
			minindex=i;
			min=a[minindex];
		}
	}
	return minindex;
}
function idx(oD,i){
	for(var j=0;j<oD.length;j++){
	if(oD[j].index==i){
		var p= oD[j];
	}}
return p;
}
function buf(obj,arr,target,fn){/////////////////缓冲运动
				var speed=0;
				
				clearInterval(timer);
				timer=setInterval(function(){
					var value=null;
					if(arr=='opacity'){
						value=Math.round(getstyle(obj,arr)*100);
					}else{
						value=parseInt(getstyle(obj,arr));
					}
					speed=(target-value)/10;
					speed=speed>0?Math.ceil(speed):Math.floor(speed);
					if(value==target){
						clearInterval(timer);
						speed=0;
						fn&&fn();
					}else{
						if(arr=='opacity'){
							obj.style[arr]=(speed+value)/100;
						}else obj.style[arr]=speed+value+'px';
					}
				},20);
			}
function ranNum(min,max){
	return Math.floor(Math.random()*(max-min+1))+min
}
function buff(obj,json,fn){//fn:回调函数，前面的运动完成之后，才能执行。
	var speed=0;
	var timer=null;
	clearInterval(obj.timer);//将定时器当作每个元素对象下面的属性来操作。
	obj.timer=setInterval(function(){
		//获取当前的值。
		var bstop=true;
		for(var attr in json){//attr：传入的属性    json[attr]:属性的值
			var current=null;
			if(attr=='opacity'){
				current=Math.round(getStyle(obj,attr)*100);//扩大100倍
			}else{
				current=parseInt(getStyle(obj,attr));
			}
			speed=(json[attr]-current)/8;
			speed=speed>0?Math.ceil(speed):Math.floor(speed);
			if(current!=json[attr]){//还有没有到目标点。继续运动
				if(attr=='opacity'){
					obj.style.opacity=(current+speed)/100;   
					obj.style.filter='alpha(opacity='+(current+speed)+')';
				}else{
					obj.style[attr]=current+speed+'px';
				}
				bstop=false;
			}
		}
		if(bstop){//运动停止条件
			clearInterval(obj.timer);
			fn&&fn();//前面fn存在，执行。
		}	
	},20);
}
function setcookie(key,value,days){
	var d=new Date();
	d.setDate(d.getDate()+days);
	document.cookie=key+'='+encodeURI(value)+';expires='+d;
}


function getcookie(key){
	var arr=decodeURI(document.cookie).split('; ');
	for(var i=0;i<arr.length;i++){
		var newarr=arr[i].split('=');
		if(newarr[0]==key){
			return newarr[1];
		}
	}
}

function delcookie(key){
	setcookie(key,'',-1);
}
function getajax(obj){
				obj.type=obj.type||'get';
				obj.data=obj.data||'';
				if(obj.async==false){
					obj.async=false;
				}else{
					obj.async=true;
				}
				if(typeof obj.data=='string'){
					obj.data=obj.data;
				}else if(typeof obj.data=='object'&&obj.data.length!=Number){
					var a1=[];
					for(var i in obj.data){
						a1.push(i+'='+obj.data[i]);
					}
					obj.data=a1.join('&');
				}else{
					alert('数据格式错误');
				}
				var ajax=null;
				try{
					ajax=new XMLHttpRequest();
				}catch(e){
					ajax=new ActiveXObject('Microsoft.XMLHTTP');
					//TODO handle the exception
				}
				if(obj.type=='get'&&obj.data){
					obj.url+='?'+obj.data;
				}
				ajax.open(obj.type,obj.url,obj.async);
				if(obj.type=='get'&&obj.data){
					//ajax.open(obj.type,obj.url,obj.async);
					ajax.send();
					}else{
					ajax.setRequestHeader('content-type','application/x-www-form-urlencoded');
					ajax.send(obj.data);
					}
				if(obj.async==false){
					obj.success&&obj.success(ajax.responseText);
				}else{
				ajax.onreadystatechange=function(){
					if(ajax.readyState==4){
						if(ajax.status==200){
						    obj.success	&&obj.success(ajax.responseText);
						}else{
							obj.error&&obj.error(ajax.status);
						}
					}
				}
				}
				}